package com.qf.servlet;

import com.qf.pojo.*;
import com.qf.service.OrderService;
import com.qf.service.impl.OrderServiceImpl;
import com.qf.utils.UUIDUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;

@WebServlet("/order")
public class OrderServlet extends baseServlet {
    public void addOrder(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
//        System.out.println("进入订单界面了");
        //判断用户是否登录
        User user = (User) request.getSession().getAttribute("user");
        //判断
        if (user==null){
            //如果未登录,请求转发到登录界面
            request.getRequestDispatcher(request.getContextPath()+"/jsp/login.jsp").forward(request,response);
        }
        //开始封装订单
        Order order = new Order();
        //获取订单id,通过UUIDUtils
        String oid = UUIDUtils.getId();
        order.setOid(oid);
        //获取下订单时间
        //public Instant toInstant():转换创建Instant表示基于时间线，转换成当前系统时间线
        //public static LocalDateTime ofInstant(Instant instant,ZoneId zone);从Instant和区域ID获取一个LocalDateTime的实例。
        //参数一:系统日期时间    参数二:时区,使用ZoneId(时区ID)获取当前系统默认时区public static ZoneId systemDefault()
        //创建当前时间对象
        Date date = new Date();
        //获取下订单时间
        order.setOrdertime(LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()));
        //获取订单总金额,先获取购物车实体
        Cart cart = (Cart) request.getSession().getAttribute("cart");
        //封装订单的总金额
        order.setTotal(cart.getTotalMoney());
        //真实姓名,地址,电话先不填
        //封装订单时哪一个用户的
        order.setUser(user);//可以获取到user的uid
        //开始获取购物车项的内容//遍历
        for (CartItem cartItem:cart.getItems()){
            //封装订单项-->他的订单数量,订单小计,商品实体

            OrderItem orderItem = new OrderItem();
            orderItem.setItemid(UUIDUtils.getId());
            orderItem.setCount(cartItem.getCount());
            orderItem.setSubtotal(cartItem.getSubTotal());
            orderItem.setProduct(cartItem.getProduct());
            //这个订单项属于哪一个订单的
            orderItem.setOrder(order);//订单项就封装完毕了
            //一个订单可以有多个订单项
            order.getItems().add(orderItem);//
        }
        //订单属于谁
        order.setUser(user);
        //调用服务层,将order插入订单表中
        OrderService orderService = new OrderServiceImpl();
        orderService.addOrder(order);
        //将order加入到session中
        request.getSession().setAttribute("order",order);
        //重定向到订单详情中
        response.sendRedirect(request.getContextPath()+"/jsp/order_info.jsp");

    }
            public void findOrderPage(HttpServletRequest request,HttpServletResponse response) throws IOException {
        //首先判断用户是否登录
                User user = (User) request.getSession().getAttribute("user");
                if (user==null){
                    //用户未登录,重定向
                    response.sendRedirect(request.getContextPath()+"/jsp/login.jsp");
                }
                //用户登录了
                //获取提交过来的参数
            }
}
